/**
* @file Application.h
* @Description: 这是QApplication的一个派生类主要是为了设定软件的各种信息。
* @Date: 2020-02-26
* @LastEditTime: 2020-02-26
* @LastEditors: twosilly
* @Author: twosilly
* @E-Mail:twosilly@foxmail.com
*/

#pragma once
#include <QApplication>
#include <QString>
#include <QDate>

class Application : public QApplication{	

public:
	//!架构
	enum HW_ARCHITECTURE {HW_32BIT = 32, HW_64BIT = 64};
	Application(int &argc, char *argv[]) 
		:QApplication(argc, argv){};

	~Application() {};
	//!通知
	bool notify(QObject *rec, QEvent *ev);
	static const QString appName() { return m_appName; }
	static void setName(const QString&name) { m_appName = name; }
	//!架构后缀
	static const QString architecturalSuffix(const HW_ARCHITECTURE hw) { return "_" + QString::number(int(hw)) + "bit"; }
	//!FIXME:软件架构名字
	static const QString appArchitecturalName(const HW_ARCHITECTURE hw) {
		return appName() + architecturalSuffix(hw) + "_" + "MeshLabScalarTest"; 
	}
	//!软件运行时间
	static const QString appVer();
	//!短的名字（软件名字加 时间）
	static const QString shortName() { return appName() + " " + appVer(); }
	//! 全部名称（软件名字加架构 加时间）
	static const QString completeName(const HW_ARCHITECTURE hw);
	//! 返回组织
	static const QString organization() { return m_organization; }
	static void organization(const QString&organiz) { m_organization = organiz;	}
	//! 网址地址
	static const QString webSite() { return m_webSite; }
	static void webSite(const QString &webSite) { m_webSite = webSite; }
	//! 下载地址
	static const QString downloadSite() { return m_downloadSite; }
	static void downloadSite(const QString &downloadSite) { m_downloadSite = downloadSite;}

	//!注册名称
	static const QString pluginPathRegisterKeyName() { return tr("pluginPath"); }
	//!版本注册名称
	static const QString versionRegisterKeyName() { return tr("version"); }
	//! 字号注册名
	static const QString wordSizeKeyName() { return tr("wordSize"); }

private:
	static QString m_appName;//!软件的名字，默认为不知道
	static QString m_organization;//!组织，机构
	static QString m_organizationHost;//!组织网址
	static QString m_webSite;//! web 地址
	static QString m_downloadSite;//! 下载地址
};
